package com.su.controller;

import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.su.tools.DaoSupport1;
import com.su.tools.PageData;
import com.su.util.Page;
import net.sf.json.JSONObject;
import net.sf.json.JSONArray;

@Service("dictService")
public class DictService {

	@Resource(name = "daoSupport1")
	private DaoSupport1 dao;
	private JSONObject json = new JSONObject();
	private PageData retPd;
	private List<PageData> retListPd;

	public JSONObject invoke(PageData pd) throws Exception {
		//
		if (pd.getString("params").equals("D101")) {
			//获取系统级别字典
			this.D101(pd);
		} else if (pd.getString("params").equals("D102")) {
			//获取用户字典
			this.D102(pd);
		} else {
			json.put("code", "100");
			json.put("msg", "没有找到该业务代码");
			return json;
		}
		return json;
	}

	private void D101(PageData pd) throws Exception {
		//获取系统级别根字典
		
		if (! pd.checkValue("parents")){
			json.put("code", "1");
			json.put("msg", "父级编不能为空!");
			return;
		}
		retListPd = dao.getList("DictMapper.getDictInfo", pd);
		if (retListPd.size() == 0){
			json.put("code", "1");
			json.put("msg", "没有查询到数据");
		} else {
			json.put("code", "0");
			json.put("msg", "");
			json.put("result", retListPd); 
		}
	}

	private void D102(PageData pd) throws Exception {
		//根据父节点,获取所有子节点.并以JSON格式返回

		if (! pd.checkValue("parent")){
			json.put("code", "1");
			json.put("msg", "父级编不能为空!");
			return;
		}

//		JSONObject json1 = new JSONObject();
		JSONArray jsonArr1 = new JSONArray();
//		json1.put("text", pd.getString("text"));
//		json1.put("nodeId", pd.getString("nodeId"));
//		pd.put("parent", json1.getString("nodeId"));
		this.getByParent(pd,jsonArr1);
//		jsonArr1.add(json1);
		json.put("code", "0");
		json.put("msg", "");
		json.put("result", jsonArr1);
		return;
	}
	
	private void getByParent(PageData pd1, JSONArray jsonArr1) throws Exception{

		List<PageData> retListPd1;
		
		retListPd1 = dao.getList("DictMapper.getByParent", pd1);
		
        for(PageData tmp:retListPd1){
        	JSONObject json2 = new JSONObject();
        	JSONArray jsonArr2 = new JSONArray();
        	//json2.put("nodeId", tmp.getString("PARENT"));
        	//json2.put("parent", tmp.getString("PARENT"));
        	json2.put("text", tmp.getString("NAME"));
        	json2.put("rowData", tmp);
        	pd1.put("parent", tmp.getString("SPARENT"));
        	//pd1.put("text", tmp.getString("NAME"));
        	this.getByParent(pd1, jsonArr2);
            if (jsonArr2.size()>0){
            	json2.put("nodes", jsonArr2);
            }
        	jsonArr1.add(json2);
        }
	}

	// ======================================================================================

	/*
	 * 保存用户
	 */
	public void saveU(PageData pd) throws Exception {
		dao.insert("AppuserMapper.saveU", pd);
	}

	/*
	 * 修改用户
	 */
	public void editU(PageData pd) throws Exception {
		dao.update("AppuserMapper.editU", pd);
	}

	/*
	 * 删除用户
	 */
	public void deleteU(PageData pd) throws Exception {
		dao.delete("AppuserMapper.deleteU", pd);
	}

	/*
	 * 批量删除用户
	 */
	public void deleteAllU(String[] USER_IDS) throws Exception {
		dao.delete("AppuserMapper.deleteAllU", USER_IDS);
	}

	/*
	 * 用户列表(全部)
	 * 
	 * public List<PageData> listAllUser(PageData pd) throws Exception { return
	 * (List<PageData>) dao.findForList("AppuserMapper.listAllUser", pd); }
	 */
	/*
	 * 用户列表(用户组)
	 * 
	 * public List<PageData> listPdPageUser(Page page) throws Exception { return
	 * (List<PageData>) dao.findForList("AppuserMapper.userlistPage", page); }
	 */
	/*
	 * 保存用户IP
	 * 
	 * public void saveIP(PageData pd) throws Exception {
	 * dao.update("AppuserMapper.saveIP", pd); }
	 */
	/*
	 * 登录判断
	 * 
	 * public PageData getUserByNameAndPwd(PageData pd) throws Exception {
	 * return (PageData) dao.findForObject("AppuserMapper.getUserInfo", pd); }
	 */
	/*
	 * 跟新登录时间
	 */
	public void updateLastLogin(PageData pd) throws Exception {
		dao.update("AppuserMapper.updateLastLogin", pd);
	}
	// ======================================================================================
}